Machines, such as those in a print shop environment, are often used to perform particular jobs and can be characterized as having jobs in a queue. Jobs to be performed by a machine can have vastly differing job sizes. For example, jobs in a print shop environment can have vastly different numbers of pages to be printed, inserted, bound, etc. In addition, a given job is often capable of being processed by a number of different machines. The machines themselves often operate at different processing rates and have different set up times. Even if the machines operate at the same processing rate, machines can differ with respect to an effective processing rate due to different reliability behaviors. Conventionally, assigning jobs to machines is performed heuristically or by intuition and based on perceived machine rates, which could be erroneous or not fully comprehensive. As such, job make-span (i.e., the total time required to complete a set of jobs) can be less than optimal in current production environments.